// #include "ThreadPool_V1.hpp"
//#include "ThreadPool_V2.hpp"
// #include "ThreadPool_V3.hpp"
#include "ThreadPool_V4.hpp"
#include "Task.hpp"
#include <memory>


int main()
{
    ThreadPool<Task>::getinstance();//不能调用成员函数，因为instance是静态成员，静态指针要把对于函数定义成静态的
    // std::unique_ptr<ThreadPool<Task>> tp(new ThreadPool<Task>());
    // tp->init();
    // tp->start();
    
    // tp->check();
    while (true)
    {
        int x,y;
        char op;
        std::cout<<" please Enter x> ";
        std::cin>>x;
        std::cout<<" please Enter y> ";
        std::cin>>y;
        std::cout<<" please Enter op(+-*/%)> ";
        std::cin>>op;
        Task t(x,y,op);
        ThreadPool<Task>::getinstance()->pushTask(t);//获取单例,单例对象也有可能在多线程场景中使用

        // tp->pushTask(t);
        // 充当生产者
        sleep(1);
        // 从网络中读取数据，构建成为任务，推送给线程池
        //tp->pushTask();
    }
    return 0;
}